﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using _4.Modelado.Inventario;

namespace _3.Datos.Inventario
{
   public class ExistenciaArticuloBD
    {
        /// <summary>
        /// Este método inserta y modifica una área
        /// </summary>
        /// <param name="comando">sentencia SQL</param>
        /// <param name="obj">Contiene las variable de Bodega</param>
       public void Existencia_ArticuloGuardar(SqlCommand comando, ExistenciaArticulo obj)
        {
            try
            {
                string sp = "usp_Existencia_ArticuloGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@FK_Articulo_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Bodega_Existencia", SqlDbType.Int));
                
                comando.Parameters.Add(new SqlParameter("@FK_Usuario_Existencia", SqlDbType.Int));
                

                comando.Parameters[0].Value = obj.iFK_Articulo_Existencia;
                comando.Parameters[1].Value = obj.iFK_Bodega_Existencia;
              
                comando.Parameters[2].Value = obj.iFK_Usuario;
            

                comando.ExecuteNonQuery();
            }
            catch (Exception exc)
            {

                throw exc;
            }

        }

       public void Existencia_ArticuloEliminar(SqlCommand comando, ExistenciaArticulo obj)
        {
            try
            {
                string sp = "usp_Existencia_ArticuloEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@FK_Articulo_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Bodega_Existencia", SqlDbType.Int));
                
                comando.Parameters[0].Value = obj.iFK_Articulo_Existencia;
                comando.Parameters[1].Value = obj.iFK_Bodega_Existencia;

                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }

       public List<ExistenciaArticulo> Existencia_ArticuloConsultar(SqlCommand comando, int FKBodega)
       {
           try
           {
               string sp = "usp_Existencia_ArticuloConsultar";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@FK_Bodega_Existencia", SqlDbType.Int));
               comando.Parameters[0].Value = FKBodega;

               IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               var ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               var lista = new List<ExistenciaArticulo>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   var obj = new ExistenciaArticulo();

                   obj.iFK_Articulo_Existencia = Convert.ToInt32(dt.Rows[i]["FK_Articulo_Existencia"]);
                   obj.sArticuloNombre = Convert.ToString(dt.Rows[i]["ArticuloNombre"]);
                   obj.iFK_Bodega_Existencia = Convert.ToInt32(dt.Rows[i]["FK_Bodega_Existencia"]);
                   obj.sBodUbicacion = dt.Rows[i]["BodUbicacion"].ToString();
                   obj.dExistenciaCantidad = Convert.ToDecimal(dt.Rows[i]["ExistenciaCantidad"]);
                   obj.iFK_Usuario = Convert.ToInt32(dt.Rows[i]["FK_Usuario_Existencia"]);


                   lista.Add(obj);
               }
               return lista;
           }
           catch (Exception exc)
           {

               throw exc;
           }
       }

  

      
    }
}
